1. Field of the Invention
The present invention relates to a method, system, and program for enabling communication between devices using dynamic addressing
2. Description of the Related Art
A storage area network (SAN) comprises a network linking one or more servers to one or more storage systems. Each storage system could comprise a Redundant Array of Independent Disks (RAID) array, tape backup, tape library, CD-ROM library, or JBOD (Just a Bunch of Disks) components. One common protocol for enabling communication among the various SAN devices is the Fibre Channel protocol, which uses optical fibers to connect devices and provide high bandwidth communication between the devices. In Fibre Channel terms the xe2x80x9cfabricxe2x80x9d comprises one or more switches, such as cascading switches, that connect the devices. The link is the two unidirectional fibers, which may comprise an optical wire, transmitting to opposite directions with their associated transmitter and receiver. Each fiber is attached to a transmitter of a port at one end and a receiver of another port at the other end.
The Fibre Channel protocol defines a fabric topology. A fabric includes one or more switches, each switch having multiple ports, also referred to as F_Ports. A fiber link may connect an N_Port, or node port, on a device to one F_Port on the switch. N_Port refers to any port on a non-switch device. An N_Port can communicate with all other N_Ports attached to the fabric to which the N_Port is connected, i.e., N_Ports on the immediate switch or interconnected cascading switches.
Another common Fibre Channel topology is the loop. The devices in a arbitrated loop are daisy chained together. An L_Port is a port on a device that has arbitrated loop capabilities. An NL_Port is a device port that is part of a loop and capable of communicating with other N_Ports in a fabric. An FL_Port is a switch port connected to a loop. FIG. 1 illustrates an arbitrated loop where the lead from the NL_Port on one device connects to the receiving NL_Port of one other device, all the way until the NL_Port of the last device connects to the receiver NL_Port of the first device in the port. FIG. 1 illustrates a private loop topology where no loop device is connected to a switch. FIG. 2 illustrates an example of a public loop where a switch FL_Port is connected to the arbitrated loop, thereby allowing communication between the fabric devices and the loop devices.
In the Fibre Channel architecture, N_Ports and NL_Ports have a 24 bit port address. In a private loop where there is no switch, the upper two bytes of the address are zeroed to xxe2x80x9800 00xe2x80x99. If the loop is attached to a fabric, i.e., switch and the NL_Port supports fabric login, then the switch assigns the loop identifier that is common to all NL_Ports on the loop as the upper two bytes of the loop device (NL_Port).
In both public and private loops, the last byte of the address is the Arbitrated Loop Physical Address (AL_PA), which identifies the device in the loop.
Numerous installed Fibre Channel configurations utilize a private arbitrated loop, including servers and storage arrays. In the prior art, efforts have been undertaken to allow fabric devices to communicate with private loop devices. This may be desirable to incorporate private loops into larger networks and to allow for scalability of the device population and increase the transmission distance. This is especially important because, as mentioned, must currently installed Fibre Channel configurations are arbitrated private loop configurations.
One technique that may be used to integrate fabric devices into an arbitrated private loop would be to upgrade all the private loop devices to have a 24 bit address, just like the fabric or public loop devices. However, such an upgrade operation would be a substantial undertaking given the number of installed private arbitrated loops. Moreover, many users may be hesitant to perform an upgrade because of concerns that such an upgrade could upset a current satisfactory system configuration. For instance, an upgrade may involve changes to low level software or firmware of the device. System administrators may be inclined against such changes that could have a substantial impact on the entire system performance, especially if the system contains sensitive or very critical data.
Another technique to allow communication between private loop devices and fabric devices involves performing a loop initialization procedure (LIP) to assign the fabric device an 8 bit arbitrated loop address (AL_PA) on the private loop. Loop initialization (LIP) allows new participants onto the private loop, assigns the AL_PAs, and provides notification of topology changes. The fabric device would then use the assigned private loop AL_PA to participate in the private loop just as if the fabric device is physically connected to the private loop. The private loop devices would view the fabric device assigned the 8 bit AL_PA as another private loop device having an 8 bit AL_PA address, even though the fabric device is in fact connected to a switch and uses the full 24 bit address, and may communicate with other fabric devices using the 24 bit address.
An FL_Port on the switch connected to the private loop would facilitate communication between the fabric devices assigned the 8 bit AL_PA with the private loop devices. The FL_Port on the switch would perform all the functions necessary to obtain the 8 bit private loop address (AL_PA) for the fabric device. Further, when the private loop device transmits a frame destined for the fabric device, the switch port would translate the 8 bit AL_PA of the private loop device in the destination ID field (DID) into the 24 bit fabric address the switch assigned to the transmitting private loop device. The FL_Port would perform similar translation for frames communicated from the fabric device to the private loop device.
One disadvantage of the prior art technique of performing a loop initialization (LIP) to assign each fabric device that wants to communicate on the private loop a private loop AL_PA is that performing the LIP operation will disrupt all the current private loop operations and perform a whole new assignment of addresses to the private loop devices. Further, the FL_Port on the switch connected to the private loop would have to provide notification of the AL_PA changes to all registered nodes in the fabric including the switch, which is disruptive to the fabric devices receiving such notification because they have to perform re-authentication. Further, these notifications may cause a network storm and clutter the network bandwidth. Thus, granting a fabric device access to the private loop by performing a loop initialization (LIP) and assigning the fabric device the 8 bit private loop AL_PA disrupts both the private loop devices and fabric devices. Further details of the Fibre Channel protocol and attaching private arbitrated loops to a switch are described in the publication xe2x80x9cDesigning Storage Area Networks: A Practical reference for Implementing Fibre Channel SANsxe2x80x9d, by Tom Clark (Addison Wesley Longman, 1999), which publication is incorporated herein by reference in its entirety.
Thus, there is a need in the art for improved techniques for allowing fabric devices attached to a switch to communicate with private loop devices.
Provided is a computer implemented method, system, and program for enabling communication between one network device that is a member of a first set of network devices that communicate using a first address format and one network device that is a member of a second set of network devices that communicate using a second address format. One frame is received from a first network device in the first set, wherein the frame is part of a first exchange of multiple frames between the first network device and one network device in the second set. A first address in the second address format is allocated to the first network device to use to communicate with the network device of the second set during the first exchange of the frames. One frame is also received from a second network device that is a member of the first set pursuant to a second exchange of multiple frames between the second network device and one network device in the second set. One address in the second address format is allocated to the second network device to use to communicate during the second exchange of frames. The address in the second address format allocated to the second network device is capable of comprising the first address or a second address in the second address format.
Still further, allocating the address in the second address format to one exchange further comprises indicating that the allocated address is assigned to the exchange and after the exchange has completed, indicating that the allocated address is not allocated to one active exchange. The address indicated as not allocated to one active exchange is capable of being allocated to a subsequent exchange.
Yet further, a determination is made of one address in the second format that was least recently allocated to one active exchange. In such case, the second address allocated to the second exchange is the least recently allocated address.
In further implementations, the second set of network devices comprises an arbitrated loop, such as a private arbitrated loop, attached to a switch. The first network device is capable of communicating with one port on the switch. Still further, the network devices and switch may communicate using the Fibre Channel protocol,